package com.qianda.qdminiapp.common.util;

import java.math.BigDecimal;

/**
 * @ClassName DoubleConverter
 * @Author cw
 * @Date 2019/8/8 13:22
 * @Version 1.0
 */
public class DoubleConverter {

    /**
     * double保留小数点位数，往上取整
     * 比如处理【评分】等数据
     *
     * @param d 要处理的double值
     * @param n 要保留的位数
     */
    public static Double getCeilNum(double d, int n) {
        BigDecimal b = new BigDecimal(String.valueOf(d));
        b = b.divide(BigDecimal.ONE, n, BigDecimal.ROUND_CEILING);
        return b.doubleValue();
    }

    /**
     * double保留小数点位数，往下取整
     * 比如处理【价格】等数据
     *
     * @param d 要处理的double值
     * @param n 要保留的位数
     */
    public static Double getFloorNum(double d, int n) {
        try {
            BigDecimal b = null;
            b = new BigDecimal(String.valueOf(d));
            b = b.divide(BigDecimal.ONE, n, BigDecimal.ROUND_FLOOR);
            return b.doubleValue();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return d;
    }

    /**
     * double保留小数点位数，四舍五入
     * 比如处理价格等数据
     *
     * @param d 要处理的double值
     * @param n 要保留的位数
     */
    public static Double getRoundingNum(double d, int n) {
        BigDecimal b = new BigDecimal(String.valueOf(d));
        b = b.divide(BigDecimal.ONE, n, BigDecimal.ROUND_HALF_UP);
        return b.doubleValue();
    }


    public static void main(String[] args) throws Exception {
        double pi = 69.51;

        double result = getCeilNum(pi, 0);

        double result2 = getFloorNum(pi, 0);

        double result3 = getRoundingNum(pi * 10000, 2);


        System.out.println("\r");
        System.out.println("我打印的Ceiling结果:" + result + "我打印的Floor结果:" + result2 + "我打印的Rounding结果:" + result3);
        System.out.println("\r");
        System.out.println(String.format("%s", Math.round(result3)));
        System.out.println("\r");
        System.out.println(String.format("%s", Math.round(5.1)));
        System.out.println("\r");
        System.out.println(String.format("%s", Math.round(5.5)));

    }
}
